package com.ht.api.db.util;

import java.text.ParseException;
import java.util.Date;

import org.quartz.CronExpression;

/**
 * cron表达式工具类
 * @author asq
 * @createTime 2025年3月25日 10:56:08
 */
public class CronUtils {
    /**
     * 计算下一次执行时间
     * @param cronExpression cron表达式
     * @return 下一次执行时间（秒级时间戳）
     */
    public static long getNextExecutionTime(String cronExpression) {
        try {
            CronExpression cron = new CronExpression(cronExpression);
            Date now = new Date();
            Date nextValidTime = cron.getNextValidTimeAfter(now);
            return nextValidTime.getTime() / 1000;
        } catch (ParseException e) {
            throw new IllegalArgumentException("Invalid cron expression: " + cronExpression, e);
        }
    }

    /**
     * 计算当前时间到下一次执行时间的秒数
     */
    public static long getDelaySeconds(String cronExpression) {
        long nextTime = getNextExecutionTime(cronExpression);
        long now = System.currentTimeMillis() / 1000;
        return nextTime - now;
    }
}
